1. Technical Field
The present invention relates to a system and method for updating a software application. More particularly, the present invention relates to a system and method for updating methods of an application that is running within a middleware software environment.
2. Description of the Related Art
In a middleware environment, such as a Java™ environment, platform-neutral applications can be deployed with the middleware environment handling platform dependent issues. Various middleware environments are provided for different computer platforms. These platforms are served by different virtual machines. For example, in a Java™ middleware environment, different Java Virtual Machines (JVMs) are executed on a different computer platforms, such as a computer running a Microsoft Windows™ operating system, a computer running IBM's AIX™ operating system, and a computer running an Apple Macintosh™ operating system.
Because of the versatility in using a middleware environment, middleware applications that execute in the middleware environment, such as Java™ software applications, are increasingly popular and are becoming increasingly complex. Middleware applications often serve a number of users, or “clients,” over a computer network, such as the Internet. Application servers have been developed to serve these middleware applications to clients. One example of a middleware application server is a J2EE™ application server that serves Java™ software applications to clients. These application servers facilitate deployment and management of the middleware applications that they serve.
After a middleware application has been deployed and subsequently started by the middleware application server, it can serve clients often for an extended period of time. However, it is unlikely that an initial version of a middleware application will adequately serve client demands throughout the lifetime of the middleware application. Instead, most middleware applications require periodic updates for a variety of reasons. First, minor bug fixes typically involve problems reported by production users or from ongoing application testing. Minor bug fixes often result in minor modifications to application logic and typically involve updates to a small number of application files and do not usually change application behavior or interfaces. Frequency of such minor bug fix updates can vary from a few per day to a set of cumulative fixes applied periodically. Second, minor content modifications are similar in scope to minor bug fixes and are often treated as small feature enhancements resulting from user feedback or new requirements for the business logic. Such minor content modifications updates could include changes to a company logo, copyright statements, or even updates to application pages that provide feedback. Third, deployment of a new revision is generally a major update to the application logic, possibly including code additions or deletions, or other significant modifications to business logic. Such updates are usually not performed frequently, and are usually performed so only after extensive application and load testing have been completed. Deployment of a new revision is typically scheduled to be applied during off-peak hours (e.g., nights or weekends).
Traditionally, middleware application servers only support Full Application Updates, which requires a application code (e.g., J2EE enterprise application archive (EAR) files in a Java™ implementation) that is expected to replace the deployed application code file. The update process simply uninstalls the deployed middleware application file and installs the new one. When the updated middleware application file is synchronized with the target nodes, the application is stopped (if it was running on the application servers on that node), then replaced and subsequently restarted.
Having to perform Full Application Updates presents a number of challenges. First, since the update support only accepts a complete middleware application file (e.g., an EAR file), the entire middleware application file is packaged even for a simple change. Second, if an application is updated while it is running, the entire application is recycled (i.e., stopped and restarted) on the target nodes when the application files are replaced. Third, since the application update performs application uninstall followed by an install, any application configuration performed post deployment (such as the configuration of shared libraries) is lost during the update.